Socket
Socket
Sign inDemoInstall

file-type

Package Overview
Dependencies
2
Maintainers
2
Versions
142
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    file-type

Detect the file type of a Buffer/Uint8Array


Version published
Maintainers
2
Install size
566 kB
Created

Package description

What is file-type?

The file-type npm package is used to detect the file type of a Buffer/Uint8Array/ArrayBuffer. It supports many file types including images, audio, video, fonts, and archive formats. It is particularly useful when the file extension is unknown or has been changed, as it checks the file signature against a list of known file types.

What are file-type's main functionalities?

Detecting file type from a Buffer

This feature allows you to detect the file type of a file by reading it into a Buffer and using the `fromBuffer` method to determine the file type.

const FileType = require('file-type');
const fs = require('fs');

(async () => {
  const buffer = fs.readFileSync('example.png');
  const fileType = await FileType.fromBuffer(buffer);
  console.log(fileType);
})();

Detecting file type from a stream

This feature allows you to detect the file type of a file by creating a readable stream and using the `fromStream` method to determine the file type.

const FileType = require('file-type');
const fs = require('fs');

(async () => {
  const stream = fs.createReadStream('example.png');
  const fileType = await FileType.fromStream(stream);
  console.log(fileType);
})();

Detecting file type from a file path

This feature allows you to detect the file type directly from a file path using the `fromFile` method.

const FileType = require('file-type');

(async () => {
  const fileType = await FileType.fromFile('example.png');
  console.log(fileType);
})();

Other packages similar to file-type

Readme

Source

file-type Build Status

Detect the file type of a Buffer/Uint8Array

The file type is detected by checking the magic number of the buffer.

Install

$ npm install --save file-type

Usage

Node.js
var readChunk = require('read-chunk'); // npm install read-chunk
var fileType = require('file-type');
var buffer = readChunk.sync('unicorn.png', 0, 262);

fileType(buffer);
//=> {ext: 'png', mime: 'image/png'}

or from a remote location:

var http = require('http');
var fileType = require('file-type');
var url = 'http://assets-cdn.github.com/images/spinners/octocat-spinner-32.gif';

http.get(url, function (res) {
	res.once('data', function (chunk) {
		res.destroy();
		console.log(fileType(chunk));
		//=> {ext: 'gif', mime: 'image/gif'}
	});
});
Browser
var xhr = new XMLHttpRequest();
xhr.open('GET', 'unicorn.png');
xhr.responseType = 'arraybuffer';

xhr.onload = function () {
	fileType(new Uint8Array(this.response));
	//=> {ext: 'png', mime: 'image/png'}
};

xhr.send();

API

fileType(buffer)

Returns an object (or null when no match) with:

buffer

Type: buffer (Node.js), uint8array

It only needs the first 262 bytes.

CLI

$ npm install --global file-type
$ file-type --help

  Usage
    file-type <filename>
    cat <filename> | file-type

  Example
    cat unicorn.png | file-type
    png

Supported file types

  • jpg
  • png
  • gif
  • webp
  • cr2
  • tif
  • bmp
  • jxr
  • psd
  • zip
  • tar
  • rar
  • gz
  • bz2
  • 7z
  • dmg
  • mp4
  • m4v
  • mid
  • mkv
  • webm
  • mov
  • avi
  • wmv
  • mpg
  • mp3
  • m4a
  • ogg
  • flac
  • wav
  • pdf
  • epub
  • exe
  • swf
  • rtf
  • woff
  • woff2
  • eot
  • ttf
  • otf
  • ico
  • flv
  • ps
  • xz
  • sqlite

SVG isn't included as it requires the whole file to be read, but you can get it here.

PR welcome for additional commonly used file types.

License

MIT © Sindre Sorhus

Keywords

FAQs

Last updated on 26 Sep 2015

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc